package com.example.server.mapper;

import com.example.server.advice.cache.CachaFromRedis;
import com.example.common.pojo.Menu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * mapper的方法命名
 * findXXXX
 * InsertXXX
 * updateXXX
 * deleteXxx
 * @author 小红
 * @since 2022-09-02
 */
@Repository
public interface MenuMapper extends BaseMapper<Menu> {

    List<Menu> findAllWithRoles();

    /**
     * 在该方法执行之前，先去查询redis中是否有改数据存在，如果有的话，直接返回，
     * 否则再去查看数据库
     * #get（prefix + value（argsName））
     * findMenusByAdminid(1) -> Redis#get(menu_1)
     * @param id
     * @return
     */

    @CachaFromRedis(prefix = "menu_", argsNames = {"adminId"})

    List<Menu> findMenusByAdminId(@Param("adminId") Integer id);

    List<Menu> findMenusLevel(@Param("parentId") Integer parentId);

    List<Integer> findMenuIdsByRid(@Param("rid") Integer rid);
}
